import type { ConfigEnv, UserConfig } from 'vite';

import { defineConfig, loadEnv } from 'vite';
import vue from '@vitejs/plugin-vue';
import vueJsx from '@vitejs/plugin-vue-jsx';
import analyzer from 'rollup-plugin-visualizer';

import { pluginsConfig, setServerConfig, resolve } from './config';

export default defineConfig(({ mode }: ConfigEnv): UserConfig => {
  const envDir = resolve('env');
  const env = loadEnv(mode, envDir, '');

  const setServer = setServerConfig({ env });

  return {
    plugins: [vue(), vueJsx(), ...pluginsConfig, setAnalyzer(env.VITE_ENV)],
    resolve: {
      extensions: ['.jsx', '.tsx', '.js', '.ts', '.json', '.vue'],
      alias: {
        '@': resolve('src'),
        '@components': resolve('src/components'),
      },
    },
    envDir,
    envPrefix: env.ENV_PREFIX,
    server: setServer({
      host: true,
    }),
    preview: setServer(),
  };
});

/**
 * 设置分析器，仅在development环境下生效
 * @param env
 * @returns
 */
function setAnalyzer(env = 'development') {
  console.log('env: ', env);
  if (env === 'development') {
    return analyzer({
      filename: 'analyzer.html',
      open: true,
    });
  }
  return null;
}
